#ifndef OPERATORTABLE_H
#define OPERATORTABLE_H
//运算级表

/*

**********操作符优先级表************
        +		-		*		/       #
+		>		>		<		<       >

-		>		>		<		<       >

*		>		>		>		>       >

/		>		>		>		>       >

#		<		<		<		<       =


*/

class OperatorTable
{
public:
    OperatorTable();
    //二元运算
    static double operate(double num1, char oper, double num2);
    //得到运算符在运算符优先级表中的行号或列号
    static int findIndex(char oper);
    //比较两个操作符的优先级
    static char precede(char o1, char o2);
};

const char priorityList[5][5] = {
    {'>', '>', '<', '<', '>'},
    {'>', '>', '<', '<', '>'},
    {'>', '>', '>', '>', '>'},
    {'>', '>', '>', '>', '>'},
    {'<', '<', '<', '<', '='}
};
#endif // OPERATORTABLE_H
